﻿<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>#修饰热键超时 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The #修饰热键超时 directive affects the behavior of the 热键 modifiers CTRL, ALT, WIN, and SHIFT." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>#修饰热键超时</h1>

<p>影响<a href="../Hotkeys.htm">热键</a>修饰符的行为: <kbd>Ctrl</kbd>, <kbd>Alt</kbd>, <kbd>Win</kbd> 和 <kbd>Shift</kbd>.</p>

<pre class="Syntax"><span class="func">#修饰热键超时</span> Milliseconds</pre>
<h2 id="Parameters">参数</h2>
<dl>

  <dt>Milliseconds</dt>
  <dd>
    <p>类型: <a href="../Concepts.htm#numbers">整数</a></p>
    <p>间隔长度, 以毫秒为单位. 此值设为 -1 时, 它永远不会超时(在 发送 后修饰键总是被推回到按下的状态), 设为 0 时, 总是超时(修饰键总是不会被推回到按下的状态).</p>
  </dd>

</dl>
<h2 id="Remarks">备注</h2>
<p>在下列情况中 <strong>不需要</strong> 使用此指令:</p>
<ul>
  <li>热键通过 <a href="Send.htm#SendInput">发送输入</a> 或 <a href="Send.htm#SendPlay">发送模拟</a> 方法发送键击. 这是因为这些方法将用户的物理按键操作和释放延迟到 发送 完成之后.</li>
  <li>脚本安装了键盘钩子(您可以通过主窗口中的 "View-&gt;Key history" 菜单项或 <a href="KeyHistory.htm">按键记录</a> 函数判断您的脚本是否使用了钩子). 这是因为钩子可以跟踪用户实际按住的修饰键(<kbd>Alt</kbd>/<kbd>Ctrl</kbd>/<kbd>Win</kbd>/<kbd>Shift</kbd>), 不需要使用超时.</li>
</ul>
<p>为了说明此指令的效果, 请参考这个例子: <code>^!a::发送 "abc"</code>.</p>
<p>执行 <a href="Send.htm">发送</a> 函数时, 它会首先释放 <kbd>Ctrl</kbd> 和 <kbd>Alt</kbd>, 以便正确发送字符. 在发送所有键击后, 此函数不知道它是否可以安全的推回 <kbd>Ctrl</kbd> 和 <kbd>Alt</kbd> 到按下状态(以匹配用户是否仍然按下它们). 但是, 如果经过的时间少于指定的毫秒数, 则将假定用户尚未有释放键的机会, 因此它将推回它们以使其符合其物理状态. 否则, 修饰键将不会被推回按下状态, 用户必须再次按下它们来修饰同一个或其他的按键.</p>
<p>超时值应设置为小于用户通常在释放热键的修饰键之前按住它们的时间. 否则, 即使用户没有实际按下修饰键, 修饰键也可能恢复到向下位置(保持按下).</p>
<p>在下列情况中您可以减少或不使用此指令:</p>
<ul>
  <li>通过在脚本的任意位置添加 <a href="_InstallKeybdHook.htm">#安装键盘钩</a> 来安装键盘钩子.</li>
  <li>使用 <a href="Send.htm#SendInput">发送输入</a> 或 <a href="Send.htm#SendPlay">发送模拟</a> 方法而不使用传统的 <a href="Send.htm#SendEvent">发送事件</a> 方法.</li>
  <li>使用传统的 <a href="Send.htm#SendEvent">发送事件</a> 方法, 将 <a href="SetKeyDelay.htm">设置按键延迟</a> 减少到 0 或 -1, 这应该会有所帮助, 因为它可以更快地发送击键.</li>
</ul>
<p>如果脚本中未使用此指令, 那么它会表现得就像此设置为 50.</p>
<h2 id="Related">相关</h2>
<p><a href="GetKeyState.htm">获取按键状态</a></p>
<h2 id="Examples">示例</h2>
<div class="ex" id="ExBasic">
<p><a href="#ExBasic">#1</a></p>
<pre>#修饰热键超时 100</pre>
</div>

</body>
</html>